5567
12813
Fermé. Cette question ne respecte pas les directives de Stack Overflow. Il n'accepte pas les réponses actuellement.
Vous souhaitez améliorer cette question? Mettez à jour la question pour qu'elle soit pertinente pour Stack Overflow.
Fermé il y a 4 ans.
Améliorez cette question
Je construis une application Shiny qui traite plusieurs fichiers texte sélectionnés par un utilisateur.
La sortie est une énorme trame de données avec des millions de lignes et des dizaines de colonnes.
Je suis maintenant intéressé à permettre à un utilisateur de filtrer interactivement les lignes, de sélectionner des colonnes et de résumer les colonnes (en choisissant parmi une liste de fonctions telles que moyenne, sd, max, min, somme, etc ...) Le résultat serait une trame de données plus petite résumant les données par sélections utilisateur - en gros, j'ai besoin de créer une interface graphique qui implémente une fonctionnalité de base de la bibliothèque dplyr.
En général, je sais comment le faire en créant manuellement un tas d'éléments GUI et en les alimentant dans une fonction serveur avec un certain nombre de commandes dplyr. Comme cela semble être une fonctionnalité assez standard (interface utilisateur graphique qui filtre et résume une trame de données), avant de commencer à la créer à partir de zéro, je me demande s'il y a quelque chose de «prêt à l'emploi» que je peux utiliser tel quel ou comme point de départ . 
Je sais que vous avez dit que rpivotTable n'était pas tout à fait ce que vous recherchiez, mais je pense qu'il peut être configuré pour faire le gros du travail,
Voici un exemple (en utilisant rpivotTable pour la manipulation, DT pour afficher le data.frame, rvest pour analyser le innerHTML du DOM, il pourrait y avoir un meilleur format de données pour passer l'objet table du côté client, mais c'est une preuve de concept ):
ui.R
bibliothèque (brillant)
bibliothèque (DT)
bibliothèque (rpivotTable)
FullPage <- fluidPage (
DT :: dataTableOutput ('aSummaryTable'),
rpivotTableOutput ('RÉSULTATS')
)
Page entière
serveur.R:
bibliothèque (brillant)
bibliothèque (rpivotTable)
bibliothèque (DT)
bibliothèque (rvest)
function (entrée, sortie, session) {
# Créez des exemples de données
qbdata <- réactif ({
expand.grid (LETTRES, 1: 3)
})
# Nettoyez le html et stockez-le comme réactif
summarydf <- eventReactive (saisissez $ myData, {
entrée $ myData%>%
read_html%>%
html_table (fill = TRUE)%>%
# Il s'avère qu'il y a deux tableaux dans un tableau croisé dynamique, nous voulons le deuxième
. [[2]]
})
# show df comme DT :: datatable
sortie $ aSummaryTable <- DT :: renderDataTable ({
datatable (summarydf (), rownames = FALSE)
})
# Chaque fois que la configuration est actualisée, rappelez avec le contenu de la table
sortie $ RESULTS <- renderRpivotTable ({
rpivotTable (
qbdata (),
onRefresh =
htmlwidgets :: JS ("fonction (config) {
Shiny.onInputChange ('myData', document.getElementById ('RESULTS'). InnerHTML);
} ")
)
})
}
|
Ce n'est pas la réponse que vous recherchez? Parcourir les autres questions étiquetées r dplyr brillant ou posez votre propre question.